Field of the Invention
This invention relates to apparatus and methods for preserving data availability and I/O performance when creating virtual RAID volumes with storage virtualization products.
Background of the Invention
Storage virtualization software running on a host computer or in a storage-area-network (SAN) may be used to create virtual RAID volumes such as striped or mirrored volumes. Applications may use these virtual RAID volumes instead of accessing physical disks directly. I/O performance may be improved by striping data across multiple physical disks. Data availability may be improved by replicating data across multiple physical disks.
With the increasing popularity of thin provisioning, disk array vendors may expose virtual volumes (e.g., virtual logical unit numbers, or LUNs) that are thin provisioned. In such volumes, physical storage space is allocated on demand. That is, the total virtual space allocated to a thin-provisioned volume is not fully backed by physical storage space until an application writes to the volume, at which time space is allocated to hold the write data. On-demand allocation may be performed from a storage pool that consists of physical disks within the disk array.
Unfortunately, on-demand allocation of physical space inside storage arrays can cause problems for virtual RAID volumes created by storage virtualization products such as IBM's Logical Volume Manager (LVM), Veritas Volume Manager (VxVM), VMWare, IBM's SAN Volume Controller (SVC), or the like. For example, to improve I/O performance, SVC may be used to create a three-way striped virtual RAID volume from three thin-provisioned volumes exposed by a backend disk array. The disk array is unaware that the thin-provisioned volumes are used in the three-way striped virtual RAID volume. When writes occur to the three-way striped volume, the disk array allocates physical space to the three thin-provisioned volumes from a pool of physical disks. Since the disk array is unaware that the thin-provisioned volumes are used in a virtual RAID volume, the disk array may allocate physical storage to the three thin-provisioned volumes from the same physical disk. This will defeat the very purpose of creating the three-way striped volume on the SVC.
Similarly, if storage virtualization software were to create an n-way mirrored virtual RAID volume from n thin-provisioned volumes, it is possible that the disk array would allocate space to some or all of the n thin-provisioned volumes from a single backend physical disk, thereby reducing or eliminating the data availability characteristic that the n-way mirrored virtual RAID volume was intended to create. As stated above, this occurs because the backend disk array is unaware of the I/O performance and/or data availability characteristics associated with virtual RAID volumes exposed by higher layers of storage virtualization software. This can create significant problems in enterprise data centers where the I/O performance and data availability characteristics of a virtual RAID volume are critical to an application's requirements.
In view of the foregoing, what is needed are apparatus and methods to preserve data availability and I/O performance associated with particular RAID levels when creating virtual RAID volumes.